package linear;

public class BracketsMatch {
    public static void main(String[] args) {
        String s="(上海(长安)())";
        boolean match=isMatch(s);
        System.out.println(match);
    }

    private static boolean isMatch(String s) {
        //创建栈来保存左括号
        Stack<String> chars=new Stack<String>();
        //遍历字符串，拿到每个字符
        for (int i=0;i<s.length();i++){
            //转化为字符串类型
            String currChar=s.charAt(i)+"";
            if (currChar.equals("(")){
                //判断字符是否为左括号，是则压栈
                chars.push(currChar);
            }else if (currChar.equals(")")){
                String t=chars.pop();
                //判断元素t是否为null，若是说明该”）“没有对应的左括号
                if (t==null){
                    return false;
                }
            }
        }
        //循环结束后判断栈中有无多余的“（”，若有，则不匹配，没有则匹配
        if (chars.size()==0) {
            return true;
        }else{
            return false;
        }
    }
}
